spinbutton: Don't expand the buttons
authorBenjamin Otte <otte@redhat.com>
Tue, 26 Jan 2016 15:40:33 +0000 (16:40 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 26 Jan 2016 16:59:08 +0000 (17:59 +0100)
When the spinbutton grows larger, distribute horizontal size to the
entry and vertical size to the buttons.

Obviously, horizontal size only matters for horizontal spinbuttons and
vertical for vertical spinbuttons.

gtk/gtkspinbutton.c

index c570288b31d3b52ed043a88c6d783d2d4688b917..27f518401844ed41f74f70918f307e650fdc6bf9 100644 (file)
@@ -726,32 +726,36 @@ static void
 update_node_ordering (GtkSpinButton *spin_button)
 {
   GtkSpinButtonPrivate *priv = spin_button->priv;
-  GtkCssGadget *middle, *last;
+  int down_button_pos, up_button_pos;
 
   if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
     {
       if (gtk_widget_get_direction (GTK_WIDGET (spin_button)) == GTK_TEXT_DIR_LTR)
         {
-          middle = priv->down_button;
-          last = priv->up_button;
+          down_button_pos = 1;
+          up_button_pos = -1;
         }
       else
         {
-          middle = priv->down_button;
-          last = gtk_entry_get_gadget (GTK_ENTRY (spin_button));
+          down_button_pos = 1;
+          up_button_pos = 0;
         }
     }
   else
     {
-      middle = gtk_entry_get_gadget (GTK_ENTRY (spin_button));
-      last = priv->down_button;
+      up_button_pos = 0;
+      down_button_pos = -1;
     }
 
   gtk_box_gadget_set_orientation (GTK_BOX_GADGET (priv->gadget), priv->orientation);
-  gtk_box_gadget_remove_gadget (GTK_BOX_GADGET (priv->gadget), middle);
-  gtk_box_gadget_remove_gadget (GTK_BOX_GADGET (priv->gadget), last);
-  gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget), -1, middle, TRUE, TRUE, GTK_ALIGN_FILL);
-  gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget), -1, last, TRUE, TRUE, GTK_ALIGN_FILL);
+  gtk_box_gadget_remove_gadget (GTK_BOX_GADGET (priv->gadget), priv->up_button);
+  gtk_box_gadget_remove_gadget (GTK_BOX_GADGET (priv->gadget), priv->down_button);
+  gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget),
+                                up_button_pos, priv->up_button,
+                                FALSE, TRUE, GTK_ALIGN_FILL);
+  gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget),
+                                down_button_pos, priv->down_button,
+                                FALSE, TRUE, GTK_ALIGN_FILL);
 }
 
 static void
@@ -796,7 +800,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   g_object_unref (entry_node);
   gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget), 
                                 -1, gtk_entry_get_gadget (GTK_ENTRY (spin_button)),
-                                TRUE, TRUE, GTK_ALIGN_FILL);
+                                TRUE, FALSE, GTK_ALIGN_FILL);
 
   priv->down_button = gtk_icon_helper_new_named ("button",
                                                  GTK_WIDGET (spin_button));
@@ -807,7 +811,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   gtk_css_node_set_state (gtk_css_gadget_get_node (priv->down_button), gtk_css_node_get_state (widget_node));
   gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget), 
                                 -1, priv->down_button,
-                                TRUE, TRUE, GTK_ALIGN_FILL);
+                                FALSE, TRUE, GTK_ALIGN_FILL);
 
   priv->up_button = gtk_icon_helper_new_named ("button",
                                                GTK_WIDGET (spin_button));
@@ -818,7 +822,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   gtk_css_node_set_state (gtk_css_gadget_get_node (priv->down_button), gtk_css_node_get_state (widget_node));
   gtk_box_gadget_insert_gadget (GTK_BOX_GADGET (priv->gadget), 
                                 -1, priv->up_button,
-                                TRUE, TRUE, GTK_ALIGN_FILL);
+                                FALSE, TRUE, GTK_ALIGN_FILL);
 
   gtk_spin_button_set_adjustment (spin_button, NULL);